今天我們要介紹 while 這個語法,昨天的 for 可以解決適合迭代的問題,而今天這個 while 適合解決重複邏輯的問題
重複邏輯就是當一個判斷式回傳 True 之後,這個判斷式底下的程式碼就會開始工作,工作完之後再回到原本的判斷式等待指令,如果還是 True,就繼續工作,如果是 False ,就結束這個輪迴。
while [ 判斷式 ]
do
程式碼
done
1 #!/bin/bash
2 max_num=0;count=0;guess=0
3 answer=$(( $RANDOM % $max_num + 1 ))
4
5
6 echo "請輸入 1 到 $max_num (含)的數字~"
7
8 while [ "$guess" != $answer ] ; do
9 echo -n "輸入:" ; read guess
10 if [ "$guess" -lt $answer ] ; then
11 echo "太小了!"
12 elif [ "$guess" -gt $answer ] ; then
13 echo "太大了!"
14 fi
15 count=$(( $guesses + 1 ))
16 done
17
18 echo "答對了!正確答案就是 $answer"
注意 RAMDOM 是一個隨機值,因此除以 max_num 之後,answer 的值會介於 1 到 max_num
下面的 while 區塊就是當使用者猜的數字不等於答案,就會進去下面的程式碼區塊,就會根據你的猜測顯示對應的提示。
然後 count 會記錄你的猜測次數,每猜測一次 count 就會加上 1,最後答對會顯示訊息。